重点笔记:
1.再写模板的时候一定要注意大小写 Goods_index.html 正确;goods_index.html 错误 养成程序猿好习惯。linux系统对大小写敏感。
2.基础配置
建立模块(默认访问模块)
define('BIND_MODULE','Login');
define('BIND_MODULE','Admin');
define('BIND_MODULE','User');
1.环境配置
php版本>5.3.0,用wampserver所有条件满足
2.变量
$this->show('111') 同等与echo '1';
$this->display('dd.html') 输出模板,模板位置view/index/dd.html
$this->display() 是输出默认的模板 view/index/index.html
$this->assign($arr)
截取字符串:{ $data.name|substr=0,3}和
<?php echo (substr($data['name'],0,3)); ?>
默认值输出:{ $user.nickname|default="这家伙很懒,什么也没留下"}
I('post.id',0,'intval')
要尽量避免直接使用$_GET $_POST $_REQUEST 等数据,这些可能会导致安全的隐患。 就算你要获取整个$_GET数据,我们也建议你使用 I('get.')
的方式
3.where方法使用字符串条件的时候,支持预处理(安全过滤),并支持两种方式传入预处理参数,例如:
$Model->where("id=%d and username='%s' and xx='%f'",array($id,$username,$xx))->select();
$Model->where("id=%d and username='%s' and xx='%f'",$id,$username,$xx)->select();
4.连接数据库www\erp\App\Common\Conf,不需要单独去mysql_connect
'配置值' 'DB_HOST' => 'localhost', // 服务器地址 'DB_NAME' => 'erp', // 数据库名 'DB_USER' => 'root', // 用户名 'DB_PWD' => 'root', // 密码 'DB_PORT' => 3306, // 端口 'DB_PREFIX' => 'tp_', // 数据库表前缀 'DB_CHARSET'=> 'utf8', // 字符集 'DB_DEBUG' => TRUE, // 数据库调试模式 开启后可以记录SQL日志 3.2.3新增* 'DB_TYPE' => 'mysql' );
5.设置__ROOT__过滤
第一个位置(默认位置):
protected function templateContentReplace($content) { // 系统默认的特殊变量替换 $replace = array( '__ROOT__' => __ROOT__, // 当前网站地址 '__APP__' => __APP__, // 当前应用地址 '__MODULE__' => __MODULE__, '__ACTION__' => __ACTION__, // 当前操作地址 '__SELF__' => htmlentities(__SELF__), // 当前页面地址 '__CONTROLLER__'=> __CONTROLLER__, '__URL__' => __CONTROLLER__, '__PUBLIC__' => __ROOT__.'/Public',// 站点公共目录 ); // 允许用户自定义模板的字符串替换 if(is_array(C('TMPL_PARSE_STRING')) ) $replace = array_merge($replace,C('TMPL_PARSE_STRING')); $content = str_replace(array_keys($replace),array_values($replace),$content); return $content; }
第二个位置www\erp\App\Common\Conf
第三个位置www\erp\App\Home\Conf
'配置值' 'TMPL_PARSE_STRING' => array( '__Template__' => '1', ),);
6.模板连接
模板不存在:./App/Home/Template/default/Index/index.html
控制Temloate的属性是:DEFAULT_V_LAYER默认是(View) 默认的视图层名称
控制default的属性是:DEFAULT_THEME 默认为空 默认模板主题名称
控制/index/index.html属性是TMPL_FILE_DEPR默认是'/' //模板文件CONTROLLER_NAME与ACTION_NAME之间的分割符
如'TMPL_FILE_DEPR' => '/' 显示/index/index.html, 'TMPL_FILE_DEPR' => '_' 显示是default/index_index.html 或者是user_index.html,user_add.html
7.Model模块www\erp\App\Home\Model
Model文件写法
select(); return $goods_list; }}?>
在控制器页面调用
goods_list(); $this->assign('goods_list',$goods_list); echo $this->display(); }}
其他用法
m = M('goods'); // 初始化变量 } public function goods_info(){ print_r($this->m->select()); } }?>
8.把tp标签传入到js变量里面
9.把tp标签传入到js的function Ajax里面
function Ajax(){ alert(url);}
10,if语句
<if condition= "$goods_list ">记录列表<else />暂无记录</if>
11.传递参数
html页面
php
$url = U('Goods/index');
12.定义define在php文件引用
index.php:define('__UPLOAD__','./Upload/');
php输出:echo __UPLOAD__;
13 多条件查询
$where['_string'] = ' (goods_name like "%'.$files['keywords'].'%") OR ( goods_barcode like "%'.$files['keywords'].'") ';
另一种
$where['add_time'] = array(array('lt',$endtime),array('egt',$starttime));
打印出结果
SELECT * FROM `tp_stock_note` WHERE `depot_id` = 1 AND ( `add_time` < 1466410170 AND `add_time` >= 1466352000 ) ORDER BY id desc LIMIT 0,15
不同字段相同查询
$where['goods_name|barcode|goods_sn'] = array('like','%'.$keywords.'%');
不同字段不同查询
$map['status&title'] =array('1','thinkphp','_multi'=>true); //'_multi'=>true必须加在数组的最后,表示当前是多条件匹配
等同于
$map['status'] = 1;$map['title'] = 'thinkphp';
查询字段支持更多的,例如:
$map['status&score&title'] =array('1',array('gt','0'),'thinkphp','_multi'=>true);
14,thinkphp3.2 分页的LIST_ROW 不显示问题(增加红色代码),Page.class.php第139行
array('%HEADER%', '%NOW_PAGE%', '%UP_PAGE%', '%DOWN_PAGE%', '%FIRST%', '%LINK_PAGE%', '%END%', '%TOTAL_ROW%', '%TOTAL_PAGE%'), array($this->config['header'], $this->nowPage, $up_page, $down_page, $the_first, $link_page, $the_end, $this->totalRows, $this->totalPages),
改为
array('%HEADER%', '%NOW_PAGE%', '%UP_PAGE%', '%DOWN_PAGE%', '%FIRST%', '%LINK_PAGE%', '%END%', '%TOTAL_ROW%', '%TOTAL_PAGE%','%LIST_ROW%'), array($this->config['header'], $this->nowPage, $up_page, $down_page, $the_first, $link_page, $the_end, $this->totalRows, $this->totalPages,$this->listRows),
15,
$g = A('goods') 与$g= new GoodsController(); 效果同等
$goods_list = $g->goods_list();
16.语言包
html页面输出:{:L('serKeywords')}
php:$val = L('serKeywords')
16.输出sql语句
$where['offer_id'] = $id; $arr = $m->field('goods_name,goods_sn,barcode,goods_type,price')->select(); $f = $m->getlastsql(); print_r($f)
17.加载类方式
手动加载:
// 导入Org类库包 Library/Org/Util/Date.class.php类库import("Org.Util.Date");// 导入Home模块下面的 Application/Home/Util/UserUtil.class.php类库import("Home.Util.UserUtil");// 导入当前模块下面的类库 import("@.Util.Array");// 导入Vendor类库包 Library/Vendor/Zend/Server.class.phpimport('Vendor.Zend.Server');
如:
Auth.class.php
namespace Org\Util //注意上面不需要这个 class Auth { public function ss(){ echo '22'; }}
import("Org.Util.Auth");$tt = new \Auth(); //创建PHPExcel对象,注意,不能少了\ echo $tt->ss();
自动加载:
new \Org\Util\Auth();
17.ThinkPHP\Library\Org\Util 命名
在util新建Auth.class.php文件
class Auth { public function ss(){ echo '22'; }}
在控制器页面引用
import("Org.Util.Auth");$tt = new \Auth(); //创建PHPExcel对象,注意,不能少了\echo $tt->ss();
18输出模板路径
echo T('Index/index');
19直接输出T模板
$this->display(T('Index/index')
$this->display(T('Admin@Public/menu'));
T('Admin@Public/menu');
// 返回 Admin/View/Public/menu.html